package com.bestcem.xm.user.dao;

import com.bestcem.xm.user.entity.pojo.GetAccountRoleDO;
import com.bestcem.xm.user.entity.pojo.UserRoleDO;
import com.bestcem.xm.user.entity.pojo.UserRoleGroupDO;

import java.util.List;


/**
 * 角色dao
 *
 * @author Linked <zhijian.lin@idiaoyan.com>
 * @version v1.0
 * @date 2022/3/15 18:17
 */
public interface UserRoleDao {

    /**
     * 按条件检索角色
     *
     * @param roleDO 条件
     * @return java.util.List<com.bestcem.xm.user.entity.pojo.UserRoleDO>
     * @author Linzhijian <zhijian.lin@idiaoyan.com>
     * @date 2022/03/16 12:17
     */
    List<UserRoleDO> selectRoleByCondition(UserRoleDO roleDO);

    /**
     * 保存角色
     *
     * @param roleDO
     * @return java.lang.String
     * @author Linzhijian <zhijian.lin@idiaoyan.com>
     * @date 2022/03/16 12:24
     */
    String saveUserRole(UserRoleDO roleDO);

    /**
     * 更新角色
     *
     * @param updateRole
     * @return
     * @author Linzhijian <zhijian.lin@idiaoyan.com>
     * @date 2022/03/16 16:26
     */
    Integer updateRoleByPrimaryKeySelective(UserRoleDO updateRole);


    /**
     * 获取角色关联用户总数
     *
     * @param roleId
     * @param childrenAndSelfGroupIds
     * @param status
     * @return java.lang.Integer
     * @author Linzhijian <zhijian.lin@idiaoyan.com>
     * @date 2022/03/16 17:14
     */
    List<GetAccountRoleDO> getAccountRoleCount(String roleId, List<String> childrenAndSelfGroupIds, Integer status);


    /**
     * 删除角色
     *
     * @param roleId
     * @return java.lang.Integer
     * @author Linzhijian <zhijian.lin@idiaoyan.com>
     * @date 2022/03/16 17:14
     */
    Integer deleteRoleByPrimaryKey(String roleId);

    /**
     * 根据角色id列表查询角色列表
     *
     * @param roleIdList 角色id列表
     * @return java.util.List<com.bestcem.xm.user.entity.pojo.UserRoleDO>
     * @author Linzhijian <zhijian.lin@idiaoyan.com>
     * @date 2022/06/13 17:33
     */
    List<UserRoleDO> getRoleListByIdList(List<String> roleIdList);

    /**
     * 根绝角色关联user_role和user_group查询用户信息
     *
     * @param orgId   租户id
     * @param roleIds 角色列表
     * @return list of vo
     */
    List<UserRoleGroupDO> getRoleGroupByRoleIds(String orgId, List<String> roleIds);
}
